{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|default_exp callback.core"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Callback"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">Miscellaneous callbacks for timeseriesAI."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export \n",
    "from fastai.callback.all import *\n",
    "from tsai.imports import *\n",
    "from tsai.utils import *\n",
    "from tsai.data.preprocessing import *\n",
    "from tsai.data.transforms import *\n",
    "from tsai.models.layers import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "import torch.multiprocessing\n",
    "torch.multiprocessing.set_sharing_strategy('file_system')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Events"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A callback can implement actions on the following events:\n",
    "* before_fit: called before doing anything, ideal for initial setup.\n",
    "* before_epoch: called at the beginning of each epoch, useful for any behavior you need to reset at each epoch.\n",
    "* before_train: called at the beginning of the training part of an epoch.\n",
    "* before_batch: called at the beginning of each batch, just after drawing said batch. It can be used to do any setup necessary for the batch (like hyper-parameter scheduling) or to change the input/target before it goes in the model (change of the input with techniques like mixup for instance).\n",
    "* after_pred: called after computing the output of the model on the batch. It can be used to change that output before it's fed to the loss.\n",
    "* after_loss: called after the loss has been computed, but before the backward pass. It can be used to add any penalty to the loss (AR or TAR in RNN training for instance).\n",
    "* before_backward: called after the loss has been computed, but only in training mode (i.e. when the backward pass will be used)\n",
    "* after_backward: called after the backward pass, but before the update of the parameters. It can be used to do any change to the gradients before said update (gradient clipping for instance).\n",
    "* after_step: called after the step and before the gradients are zeroed.\n",
    "* after_batch: called at the end of a batch, for any clean-up before the next one.\n",
    "* after_train: called at the end of the training phase of an epoch.\n",
    "* before_validate: called at the beginning of the validation phase of an epoch, useful for any setup needed specifically for validation.\n",
    "* after_validate: called at the end of the validation part of an epoch.\n",
    "* after_epoch: called at the end of an epoch, for any clean-up before the next one.\n",
    "* after_fit: called at the end of training, for final clean-up."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Learner attributes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When writing a callback, the following attributes of Learner are available:\n",
    "\n",
    "* **model**: the model used for training/validation\n",
    "* **data**: the underlying DataLoaders\n",
    "* **loss_func**: the loss function used\n",
    "* **opt**: the optimizer used to udpate the model parameters\n",
    "* **opt_func**: the function used to create the optimizer\n",
    "* **cbs**: the list containing all Callbacks\n",
    "* **dl**: current DataLoader used for iteration\n",
    "* **x/xb**: last input drawn from self.dl (potentially modified by callbacks). xb is always a tuple (potentially with one element) and x is detuplified. You can only assign to xb.\n",
    "* **y/yb**: last target drawn from self.dl (potentially modified by callbacks). yb is always a tuple (potentially with one element) and y is detuplified. You can only assign to yb.\n",
    "* **pred**: last predictions from self.model (potentially modified by callbacks)\n",
    "* **loss**: last computed loss (potentially modified by callbacks)\n",
    "* **n_epoch**: the number of epochs in this training\n",
    "* **n_iter**: the number of iterations in the current self.dl\n",
    "* **epoch**: the current epoch index (from 0 to n_epoch-1)\n",
    "* **iter**: the current iteration index in self.dl (from 0 to n_iter-1)\n",
    "\n",
    "The following attributes are added by TrainEvalCallback and should be available unless you went out of your way to remove that callback:\n",
    "* **train_iter**: the number of training iterations done since the beginning of this training\n",
    "* **pct_train**: from 0. to 1., the percentage of training iterations completed\n",
    "* **training**: flag to indicate if we're in training mode or not\n",
    "\n",
    "The following attribute is added by Recorder and should be available unless you went out of your way to remove that callback:\n",
    "* **smooth_loss**: an exponentially-averaged version of the training loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Transform scheduler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "class TransformScheduler(Callback):\n",
    "    \"A callback to schedule batch transforms during training based on a function (sched_lin, sched_exp, sched_cos (default), etc)\"\n",
    "    def __init__(self, schedule_func:callable, show_plot:bool=False): \n",
    "        self.schedule_func,self.show_plot = schedule_func,show_plot\n",
    "        self.mult = []\n",
    "\n",
    "    def before_fit(self):\n",
    "        for pct in np.linspace(0, 1, len(self.dls.train) * self.n_epoch): self.mult.append(self.schedule_func(pct))\n",
    "        # get initial magnitude values and update initial value\n",
    "        self.mag = []\n",
    "        self.mag_tfms = []\n",
    "        for t in self.dls.after_batch: \n",
    "            if hasattr(t, 'magnitude'):\n",
    "                self.mag.append(t.magnitude)\n",
    "                t.magnitude *= self.mult[0]\n",
    "                self.mag_tfms.append(t)\n",
    "\n",
    "    def after_batch(self):\n",
    "        if self.training and len(self.mag_tfms)>0 and self.train_iter < len(self.mult):\n",
    "            # set values for next batch\n",
    "            for t,m in zip(self.mag_tfms, self.mag): \n",
    "                t.magnitude = m * self.mult[self.train_iter]\n",
    "                \n",
    "    def after_fit(self):\n",
    "        if self.show_plot and self.mult != [] and len(self.mag_tfms)>0: \n",
    "            print()\n",
    "            plt.plot(self.mult)\n",
    "            plt.title('Scheduled tfms')\n",
    "            plt.show()\n",
    "            print()\n",
    "            self.show_plot = False\n",
    "        # set values to initial values\n",
    "        for t,m in zip(self.mag_tfms, self.mag): t.magnitude = m\n",
    "    \n",
    "    def __repr__(self):\n",
    "        return f'{self.__class__.__name__}({self.schedule_func})'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TransformScheduler(<fastai.callback.schedule._Annealer object>)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "TransformScheduler(SchedCos(1, 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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z/Pnz9eFF16o7t27q3v37srJyTnt/xd8x9ff6eMWLlwom82mSZMm+TdgiPD1PB8+fFjTp09XcnKynE6nBgwYwN8freDreX7yySc1cOBAderUSWlpabrzzjtVW1vbQWmD08cff6y8vDylpKTIZrNpyZIlpz1m5cqVOvfcc+V0OtW/f3+98MIL/g1phbCFCxdaUVFR1oIFC6yvvvrKuuWWW6xu3bpZ5eXlJ9z/008/tRwOh/Xoo49amzdvtu6//34rMjLS2rhxYwcnDy6+nufrr7/emjt3rrVhwwZry5Yt1s9//nMrLi7O2r17dwcnDz6+nuvjdu7caaWmploXXnihNXHixI4JG8R8Pc91dXXW6NGjrauuuspatWqVtXPnTmvlypVWUVFRBycPLr6e55deeslyOp3WSy+9ZO3cudN67733rOTkZOvOO+/s4OTBZdmyZdZ9991nLV682JJkvfHGG6fcv7i42OrcubOVn59vbd682Xrqqacsh8NhLV++3G8ZQ7qMjBkzxpo+fXrzf3s8HislJcWaM2fOCfe/9tprrauvvrrFtqysLOvf//3f/Zoz2Pl6nv9VY2OjFRMTY7344ov+ihgy2nKuGxsbrbFjx1p/+ctfrKlTp1JGWsHX8/zss89affv2terr6zsqYkjw9TxPnz7duvTSS1tsy8/Pt8aNG+fXnKGkNWXkd7/7nTV06NAW2yZPnmzl5ub6LVfIDtPU19ersLBQOTk5zdvsdrtycnK0Zs2aEx6zZs2aFvtLUm5u7kn3R9vO87+qqalRQ0ODevTo4a+YIaGt5/qhhx5SQkKCbrrppo6IGfTacp7feustZWdna/r06UpMTNSwYcM0e/ZseTyejooddNpynseOHavCwsLmoZzi4mItW7ZMV111VYdkDhcmvguD4kF5bVFRUSGPx6PExMQW2xMTE/X111+f8BiXy3XC/V0ul99yBru2nOd/dffddyslJeV7v/xoqS3netWqVXr++edVVFTUAQlDQ1vOc3FxsT788EPdcMMNWrZsmbZv365f/epXamho0KxZszoidtBpy3m+/vrrVVFRoQsuuECWZamxsVG//OUvde+993ZE5LBxsu9Ct9uto0ePqlOnTu3+niF7ZQTB4ZFHHtHChQv1xhtvKDo62nSckFJVVaUbb7xR8+fPV3x8vOk4Ic3r9SohIUHPPfecRo0apcmTJ+u+++7TvHnzTEcLKStXrtTs2bP1zDPPaP369Vq8eLGWLl2qhx9+2HQ0nKGQvTISHx8vh8Oh8vLyFtvLy8uVlJR0wmOSkpJ82h9tO8/HPfbYY3rkkUf0wQcfaMSIEf6MGRJ8Pdc7duzQrl27lJeX17zN6/VKkiIiIrR161b169fPv6GDUFt+p5OTkxUZGSmHw9G8bfDgwXK5XKqvr1dUVJRfMwejtpznBx54QDfeeKNuvvlmSdLw4cNVXV2tW2+9Vffdd5/sdv593R5O9l0YGxvrl6siUghfGYmKitKoUaNUUFDQvM3r9aqgoEDZ2dknPCY7O7vF/pK0YsWKk+6Ptp1nSXr00Uf18MMPa/ny5Ro9enRHRA16vp7rQYMGaePGjSoqKmp+TZgwQZdccomKioqUlpbWkfGDRlt+p8eNG6ft27c3lz1J2rZtm5KTkykiJ9GW81xTU/O9wnG8AFo8Zq3dGPku9NvU2ACwcOFCy+l0Wi+88IK1efNm69Zbb7W6detmuVwuy7Is68Ybb7Tuueee5v0//fRTKyIiwnrsscesLVu2WLNmzeLW3lbw9Tw/8sgjVlRUlPX6669bZWVlza+qqipTHyFo+Hqu/xV307SOr+e5pKTEiomJsW6//XZr69at1jvvvGMlJCRYv//97019hKDg63meNWuWFRMTY73yyitWcXGx9f7771v9+vWzrr32WlMfIShUVVVZGzZssDZs2GBJsp544glrw4YN1rfffmtZlmXdc8891o033ti8//Fbe++66y5ry5Yt1ty5c7m190w99dRT1llnnWVFRUVZY8aMsT777LPmPxs/frw1derUFvu/+uqr1oABA6yoqChr6NCh1tKlSzs4cXDy5TyfffbZlqTvvWbNmtXxwYOQr7/T/4wy0nq+nufVq1dbWVlZltPptPr27Wv94Q9/sBobGzs4dfDx5Tw3NDRY//mf/2n169fPio6OttLS0qxf/epX1qFDhzo+eBD56KOPTvh37vFzO3XqVGv8+PHfOyYzM9OKioqy+vbta/31r3/1a0abZXFtCwAAmBOyc0YAAEBwoIwAAACjKCMAAMAoyggAADCKMgIAAIyijAAAAKMoIwAAwCjKCAAAMIoyAgAAjKKMAAAAoygjAADAKMoIAAAw6v8D56cCJC1IkGUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "p = torch.linspace(0.,1,100)\n",
    "f = combine_scheds([0.3, 0.4, 0.3], [SchedLin(1.,1.), SchedCos(1.,0.), SchedLin(0.,.0), ])\n",
    "plt.plot(p, [f(o) for o in p]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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za5s3boVS5Yswbvvvov09HR89dVX2LhxI1588UXR0egK2e2dET8/PyiVSpSVlZ33fllZGQIDAzs8JzAw0KTjqWvX+axly5bh5Zdfxk8//YSYmBhzxrQLpl7rY8eOoaCgAFOmTGl/z2g0AgBUKhVycnLQp08f84a2QV35Mx0UFAQnJycolcr29wYMGIDS0lLo9Xqo1WqzZrZFXbnOCxcuxIwZM3DvvfcCAAYPHoy6ujrcd999eO6556BQ8N/X3eFin4UeHh5muSsC2PGdEbVajdjYWKSkpLS/ZzQakZKSgvj4+A7PiY+PP+94ANi8efNFj6euXWcAePXVV/Hiiy9i06ZNGDFihCWi2jxTr3VUVBQOHDiAjIyM9tdNN92E8ePHIyMjA6GhoZaMbzO68mc6MTERubm57WUPAI4cOYKgoCAWkYvoynWur6+/oHCcLYAyH7PWbYR8FpptaqwVWL16tazRaORPPvlEPnz4sHzffffJXl5ecmlpqSzLsjxjxgz5mWeeaT9+x44dskqlkpctWyZnZWXJixcv5tLeTjD1Or/88suyWq2W161bJ5eUlLS/ampqRP0INsPUa/1HXE3TOaZe58LCQtnd3V1++OGH5ZycHPm7776T/f395ZdeeknUj2ATTL3Oixcvlt3d3eX//ve/cl5envzjjz/Kffr0ke+44w5RP4JNqKmpkfft2yfv27dPBiC//vrr8r59++Tjx4/LsizLzzzzjDxjxoz2488u7X3qqafkrKwsefny5Vzae6XefvttOSwsTFar1fKoUaPkXbt2tf/euHHj5FmzZp13/Jdffin369dPVqvV8qBBg+SNGzdaOLFtMuU69+rVSwZwwWvx4sWWD26DTP0z/XssI51n6nXeuXOnHBcXJ2s0GjkiIkL+xz/+Ibe0tFg4te0x5To3NzfLf//73+U+ffrIWq1WDg0NlR966CH5zJkzlg9uQ7Zs2dLh37lnr+2sWbPkcePGXXDO0KFDZbVaLUdERMgff/yxWTNKssx7W0RERCSO3c4ZISIiItvAMkJERERCsYwQERGRUCwjREREJBTLCBEREQnFMkJERERCsYwQERGRUCwjREREJBTLCBEREQnFMkJERERCsYwQERGRUCwjREREJNT/A3HbD810ixivAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "p = torch.linspace(0.,1,100)\n",
    "f = combine_scheds([0.3, 0.7], [SchedCos(0.,1.), SchedCos(1.,0.)])\n",
    "plt.plot(p, [f(o) for o in p]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ShowGraph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "class ShowGraph(Callback):\n",
    "    \"(Modified) Update a graph of training and validation loss\"\n",
    "    order,run_valid=65,False\n",
    "    names = ['train', 'valid']\n",
    "    def __init__(self, plot_metrics:bool=True, final_losses:bool=True, perc:float=.5):\n",
    "        store_attr()\n",
    "\n",
    "    def before_fit(self):\n",
    "        self.run = not hasattr(self.learn, 'lr_finder') and not hasattr(self, \"gather_preds\")\n",
    "        if not(self.run): return\n",
    "        self.nb_batches = []\n",
    "        self.learn.recorder.loss_idxs = [i for i,n in enumerate(self.learn.recorder.metric_names[1:-1]) if 'loss' in n]\n",
    "        _metrics_info = [(i,n) for i,n in enumerate(self.learn.recorder.metric_names[1:-1]) if 'loss' not in n]\n",
    "        if len(_metrics_info) > 0: \n",
    "            self.metrics_idxs, self.metrics_names = list(zip(*_metrics_info))\n",
    "        else: \n",
    "            self.metrics_idxs, self.metrics_names = None, None\n",
    "\n",
    "    def after_train(self): self.nb_batches.append(self.train_iter - 1)\n",
    "\n",
    "    def after_epoch(self):\n",
    "        \"Plot validation loss in the pbar graph\"\n",
    "        if not self.nb_batches: return\n",
    "        rec = self.learn.recorder\n",
    "        if self.epoch == 0:\n",
    "            self.rec_start = len(rec.losses)\n",
    "        iters = range_of(rec.losses)\n",
    "        all_losses = rec.losses if self.epoch == 0 else rec.losses[self.rec_start-1:]\n",
    "        val_losses = np.stack(rec.values)[:, self.learn.recorder.loss_idxs[-1]].tolist()\n",
    "        if rec.valid_metrics and val_losses[0] is not None:\n",
    "            all_losses = all_losses + val_losses\n",
    "        else:\n",
    "            val_losses = [None] * len(iters)\n",
    "        y_min, y_max = min(all_losses), max(all_losses)\n",
    "        margin = (y_max - y_min) * .05\n",
    "        x_bounds = (0, len(rec.losses) - 1)\n",
    "        y_bounds = (y_min - margin, y_max + margin)\n",
    "        self.update_graph([(iters, rec.losses), (self.nb_batches, val_losses)], x_bounds, y_bounds)\n",
    "\n",
    "    def after_fit(self):\n",
    "        if hasattr(self, 'graph_ax'):\n",
    "            plt.close(self.graph_ax.figure)\n",
    "        if self.plot_metrics: \n",
    "            self.learn.plot_metrics(final_losses=self.final_losses, perc=self.perc)\n",
    "\n",
    "    def update_graph(self, graphs, x_bounds=None, y_bounds=None, figsize=(6,4)):\n",
    "        if not hasattr(self, 'graph_fig'):\n",
    "            self.graph_fig, self.graph_ax = plt.subplots(1, figsize=figsize)\n",
    "            self.graph_out = display(self.graph_ax.figure, display_id=True)\n",
    "        self.graph_ax.clear()\n",
    "        if len(self.names) < len(graphs): self.names += [''] * (len(graphs) - len(self.names))\n",
    "        for g,n in zip(graphs,self.names): \n",
    "            if (g[1] == [None] * len(g[1])): continue\n",
    "            self.graph_ax.plot(*g, label=n)\n",
    "        self.graph_ax.legend(loc='upper right')\n",
    "        self.graph_ax.grid(color='gainsboro', linewidth=.5)\n",
    "        if x_bounds is not None: self.graph_ax.set_xlim(*x_bounds)\n",
    "        if y_bounds is not None: self.graph_ax.set_ylim(*y_bounds)\n",
    "        self.graph_ax.set_title(f'Losses\\nepoch: {self.epoch +1}/{self.n_epoch}')\n",
    "        self.graph_out.update(self.graph_ax.figure)\n",
    "        \n",
    "ShowGraphCallback2 = ShowGraph"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## SaveModel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "class SaveModel(TrackerCallback):\n",
    "    \"A `TrackerCallback` that saves the model's best during training and loads it at the end with a verbose option.\"\n",
    "    _only_train_loop,order = True,TrackerCallback.order+1\n",
    "    def __init__(self, monitor='valid_loss', comp=None, min_delta=0., fname='model', every_epoch=False, at_end=False,\n",
    "                 with_opt=False, reset_on_fit=True, verbose=False):\n",
    "        super().__init__(monitor=monitor, comp=comp, min_delta=min_delta, reset_on_fit=reset_on_fit)\n",
    "        assert not (every_epoch and at_end), \"every_epoch and at_end cannot both be set to True\"\n",
    "        # keep track of file path for loggers\n",
    "        self.last_saved_path = None\n",
    "        store_attr('fname,every_epoch,at_end,with_opt,verbose')\n",
    "\n",
    "    def _save(self, name): self.last_saved_path = self.learn.save(name, with_opt=self.with_opt)\n",
    "\n",
    "    def after_epoch(self):\n",
    "        \"Compare the value monitored to its best score and save if best.\"\n",
    "        if self.every_epoch:\n",
    "            if (self.epoch%self.every_epoch) == 0: self._save(f'{self.fname}_{self.epoch}')\n",
    "        else: #every improvement\n",
    "            super().after_epoch()\n",
    "            if self.new_best:\n",
    "                pv(f'Better model found at epoch {self.epoch} with {self.monitor} value: {self.best}.', self.verbose)\n",
    "                self._save(f'{self.fname}')\n",
    "\n",
    "    def after_fit(self, **kwargs):\n",
    "        \"Load the best model.\"\n",
    "        if self.at_end: self._save(f'{self.fname}')\n",
    "        elif not self.every_epoch: self.learn.load(f'{self.fname}', with_opt=self.with_opt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Weight per sample loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This process shows an example of how the weights could be calculated. This particular regression method was published in: \n",
    "\n",
    "Yang, Y., Zha, K., Chen, Y. C., Wang, H., & Katabi, D. (2021). Delving into Deep Imbalanced Regression. arXiv preprint arXiv:2102.09554.    \n",
    "(https://arxiv.org/pdf/2102.09554.pdf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "from scipy.ndimage import gaussian_filter1d\n",
    "from scipy.signal.windows import triang\n",
    "from scipy.ndimage import convolve1d\n",
    "\n",
    "\n",
    "def get_lds_kernel_window(lds_kernel=\"gaussian\", lds_ks=9, lds_sigma=1):\n",
    "    r\"\"\"Function to determine the label distribution smoothing kernel window\n",
    "\n",
    "    lds_kernel (str): LDS kernel type\n",
    "    lds_ks (int): LDS kernel size (should be an odd number).\n",
    "    lds_sigma (float): LDS gaussian/laplace kernel sigma\n",
    "    \"\"\"\n",
    "\n",
    "    assert lds_kernel in ['gaussian', 'triang', 'laplace']\n",
    "    half_ks = (lds_ks - 1) // 2\n",
    "\n",
    "    if lds_kernel == 'gaussian':\n",
    "        base_kernel = [0.] * half_ks + [1.] + [0.] * half_ks\n",
    "        kernel_window = gaussian_filter1d(\n",
    "            base_kernel, sigma=lds_sigma) / max(gaussian_filter1d(base_kernel, sigma=lds_sigma))\n",
    "    elif lds_kernel == 'triang':\n",
    "        kernel_window = triang(lds_ks)\n",
    "    else:\n",
    "        def laplace(x): return np.exp(-abs(x) / lds_sigma) / (2. * lds_sigma)\n",
    "        kernel_window = list(map(laplace, np.arange(-half_ks, half_ks + 1))) / \\\n",
    "            max(map(laplace, np.arange(-half_ks, half_ks + 1)))\n",
    "\n",
    "    return kernel_window\n",
    "\n",
    "\n",
    "def prepare_LDS_weights(labels, n_bins=None, label_range=None, reweight='inv', lds_kernel='gaussian', lds_ks=9, lds_sigma=1, \n",
    "                        max_rel_weight=None, show_plot=True):\n",
    "    \n",
    "    assert reweight in {'inv', 'sqrt_inv'}\n",
    "    labels_shape = labels.shape\n",
    "    if n_bins is None:\n",
    "        labels = labels.astype(int)\n",
    "        n_bins = np.max(labels) - np.min(labels)\n",
    "    num_per_label, bin_edges = np.histogram(labels, bins=n_bins, range=label_range)\n",
    "    new_labels = np.searchsorted(bin_edges, labels, side='left')\n",
    "    new_labels[new_labels == 0] = 1\n",
    "    if reweight == 'sqrt_inv':\n",
    "        num_per_label = np.sqrt(num_per_label)\n",
    "    lds_kernel_window = get_lds_kernel_window(lds_kernel=lds_kernel, lds_ks=lds_ks, lds_sigma=lds_sigma)\n",
    "    smoothed_value = convolve1d(num_per_label, weights=lds_kernel_window, mode='constant')\n",
    "    if show_plot:\n",
    "        plt.bar(bin_edges[:-1], num_per_label / num_per_label.sum(), width=(bin_edges[1]-bin_edges[0]), color='lime', edgecolor='black', label='original')\n",
    "        plt.plot(bin_edges[:-1], smoothed_value / smoothed_value.sum(), color='red', label='smoothed')\n",
    "        plt.title(f\"Label distribution by bin (reweight={reweight})\")\n",
    "        plt.legend(loc='best')\n",
    "        plt.show()\n",
    "    num_per_label = smoothed_value[new_labels.flatten() - 1].reshape(*labels_shape)\n",
    "    weights = 1 / num_per_label\n",
    "    weights[num_per_label == 0] = 0\n",
    "    if max_rel_weight is not None: \n",
    "        weights = np.clip(weights, None, np.min(weights) * max_rel_weight)\n",
    "    weights = weights / weights.sum() * len(labels)\n",
    "    return torch.Tensor(weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgD0lEQVR4nO3deVwV9f7H8ReggIDggoIYivuuJCTX1LQbiWaLVqZtorestJ1cslI0K9xSc/lp165m2WJ1u7YZpdysVFyC1BYz9WK4gaIJigEK8/tj4uRRQA4CZ8D38/GYB5w53/nOZzgHzpuZ78y4GIZhICIiImJhrs4uQERERORiFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWKTC7du3DxcXF2bNmlVufa5btw4XFxfWrVtXpuUnT56Mi4uL3byQkBCGDx9+6cVdROHP4/XXX7fNGz58OD4+PhW+7kIuLi5Mnjy50tZXqLK208XFhUceeeSi7V5//XVcXFzYt29fua5///79eHp6smHDhnLtt6JdyvuitD/zilDR7+djx47h7e3N6tWrK2wdcnEKLFKkwj/k3333nbNLsbTVq1c75YO/NKxcW3X3/PPPExERQY8ePZxdiuVs3LiRyZMnc+LECWeXUmr169fn/vvvZ+LEic4u5bJWw9kFiFjFrl27cHV1LMOvXr2ahQsXOhQMmjZtyh9//EHNmjUdrNAxJdX2xx9/UKOGfv3vvfdehg4dioeHR7n1efToUZYvX87y5cvLrc/KUhnvi40bNzJlyhSGDx9OnTp1yqXPyqj7oYceYt68efz3v//l73//e4WuS4qmPSwif/Lw8KjQEHH27Fny8vJwcXHB09MTNze3ClvXxXh6eiqwAG5ubnh6el5wePBSrFixgho1anDTTTddtO3p06fLbb3loaq+Lyqj7nbt2tGxY0e7Q7lSuRRYpMzy8vKYNGkSYWFh+Pn54e3tTa9evfjqq6+KXWbOnDk0bdqUWrVq0bt3b3788ccL2vzyyy/cfvvt1KtXD09PT8LDw/n444/LXOf69eu56qqr8PT0pEWLFrz66qtFtjt/DMuZM2eYMmUKrVq1wtPTk/r169OzZ0/WrFkDmOMxFi5cCJjH0AsnsB+3M3fuXFq0aIGHhwc///xzkWNYCv3vf/8jKioKb29vgoKCeP755zn3hurFjd05v8+Saiucd/6el++//57+/fvj6+uLj48P1113HZs2bbJrU3iocMOGDcTExNCgQQO8vb0ZNGgQR48eLfoFKEJJ22kYBiEhIdxyyy0XLJeTk4Ofnx8PPvhgqdbz1ltv0aZNGzw9PQkLC+Obb74pcnvOHcMSEhLCjTfeyPr16+nWrRuenp40b96cN954o1TrXLVqFREREReM1enTpw8dO3YkKSmJa665Bi8vL5555hkAcnNziY2NpWXLlnh4eBAcHMy4cePIzc21LX/rrbfStWtXuz5vuukmXFxc7H4/Nm/ejIuLC59//rlt3okTJ3jiiScIDg7Gw8ODli1bMn36dAoKCuz6K+p9sW7dOsLDw+1+f4oaA3bu9nfs2BEPDw86dOhAfHy87bnJkyczduxYAJo1a2Z7X17qGKLz6y6sb8+ePbY9OX5+fowYMcIuJHbs2JFrr732gv4KCgpo3Lgxt99+u93866+/nk8++cTud1IqT9WL0mIZWVlZvPbaa9x5552MHDmSkydP8q9//YuoqCi2bNlCaGioXfs33niDkydP8vDDD5OTk8Mrr7zC3//+d3744QcCAgIA+Omnn+jRoweNGzfm6aefxtvbm/fee4+BAwfy73//m0GDBjlU4w8//EDfvn1p0KABkydP5uzZs8TGxtrWV5LJkycTFxfH/fffT7du3cjKyuK7774jOTmZ66+/ngcffJBDhw6xZs0a3nzzzSL7WLZsGTk5OTzwwAN4eHhQr169Cz4kCuXn59OvXz/+9re/MWPGDOLj44mNjeXs2bM8//zzDm13aWo7108//USvXr3w9fVl3Lhx1KxZk1dffZU+ffrw9ddfExERYdf+0UcfpW7dusTGxrJv3z7mzp3LI488wsqVKy+6rottp4uLC/fccw8zZszg+PHj1KtXz7bsJ598QlZWFvfcc89F1/P111+zcuVKHnvsMTw8PPi///s/+vXrx5YtW+jYsWOJy+7Zs4fbb7+d++67j+joaJYuXcrw4cMJCwujQ4cOxS535swZtm7dyqhRo4p8/tixY/Tv35+hQ4dyzz33EBAQQEFBATfffDPr16/ngQceoF27dvzwww/MmTOHX3/9lVWrVgHQq1cvPvroI7KysvD19cUwDDZs2ICrqyvffvstN998MwDffvstrq6u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MDIzM51diohY2G+//WZ4enkaQImTp5en8dtvvzm73MvKH3/8Yfz888/GH3/88dfMU6cMw4wOlT+dOlWqug8dOmTUqFHDmD17tpGSkmLs2LHDWLhwoXHy5EkjOjraqF27tvHwww8bv/zyi/Gvf/3LAIyoqCjjxRdfNH799Vdj6tSpRs2aNY39+/f/ucmnjEaNGhm33nqr8cMPPxgJCQlGs2bNjOjoaNs6Z8+ebfj6+hrvvPOO8csvvxjjxo0zatasafz666+GYRjGli1bDMBYu3atcfjwYePYsWOGYRhGdHS04evrazz00EPGzp07jU8++cTw8vIy/vnPf9r6vv/++42rr77a+Oabb4w9e/YYM2fONDw8PGx9b9q0yXB1dTWmT59u7Nq1y3jllVeMOnXqGH5+fo6/voZjn98KLCJy2UhKSjJDyQoMkoqZVpihJSkpydnlXlaqamApfE/t27fvgueio6ONpk2bGvn5+bZ5bdq0MXr16mV7fPbsWcPb29t45513DMMwjH/+859G3bp1jVPnrP+zzz4zXF1djbS0NMMwDCMoKMh48cUX7dZ11VVXGaNHjzYMwzBSUlIMwPj++++LrOfs2bO2eYMHDzaGDBliGIYZ6N3c3IyDBw/aLXfdddcZEyZMMAzDMO68807jhhtusHt+yJAhlRJYdKVbEbn8tAO6OrsIuSgvLzjnUEilr7sUunTpwnXXXUenTp2Iioqib9++3H777dStWxeADh062F00LSAggI4dO9oeu7m5Ub9+fY4cOQLAzp076dKlC97e3rY2PXr0oKCggF27dlGrVi0OHTpEjx497Oro0aMH27dvv2i9HTp0wM3Nzfa4UaNG/PDDD4B5KCo/P5/WrVvbLZObm0v9+vVt9Q0aNMju+e7du9sdkqooCiwiImJNLi5wzge3Fbm5ubFmzRo2btzIl19+yfz583n22WfZvHkzADVr1rRr7+LiUuS8goKCSqm3pHWfOnUKNzc3kpKS7EINgI+PT6XUVxINuhUREbkELi4u9OjRgylTpvD999/j7u7Of/7znzL11a5dO7Zv3052drZt3oYNG3B1daVNmzb4+voSFBTEhg0b7JbbsGED7du3B7DdETk/P9+hdV955ZXk5+dz5MgRWrZsaTcFBgba6isMY4U2bdrk8HaWhQKLiIhIGW3evJmXXnqJ7777jtTUVD788EOOHj1Ku3btytTf3XffjaenJ9HR0fz444989dVXPProo9x7770EBAQAMHbsWKZPn87KlSvZtWsXTz/9NNu2bePxxx8HoGHDhtSqVYv4+HjS09PJzMws1bpbt27N3XffzbBhw/jwww9JSUlhy5YtxMXF8dlnnwHw2GOPER8fz6xZs9i9ezcLFiyolMNBoMAiIiJSZr6+vnzzzTfccMMNtG7dmueee46XX36Z/v37l6k/Ly8vvvjiC44fP85VV13F7bffznXXXceCBQtsbR577DFiYmJ46qmn6NSpE/Hx8Xz88ce0atUKgBo1ajBv3jxeffVVgoKCuOWWW0q9/mXLljFs2DCeeuop2rRpw8CBA9m6dStNmjQB4G9/+xtLlizhlVdeoUuXLnz55Zc899xzZdpWR7kYhgMnm1tUVlYWfn5+ZGZm4uvr6+xyRMSikpOTCQsLgySKH3SbDIRBUlISXbtqZG5lycnJISUlhWbNmuHp6enscqScFff6OvL5rT0sIiIiYnkKLCIiImJ5CiwiIiJieQosIiIiYnkKLCIiImJ5CiwiIiJieQosIiIiYnkKLCIiImJ5uvmhiIhYWmpqKhkZGZW2Pn9/f9uVXcU6FFhERMSyUlNTadOuDTmncyptnZ5enuzauatCQ8vkyZNZtWoV27ZtK/Uyffr0ITQ0lLlz5zq1Dmcp0yGhhQsXEhISgqenJxEREWzZsqXYth9++CHh4eHUqVMHb29vQkNDefPNN+3aDB8+HBcXF7upX79+ZSlNRESqkYyMDDOsrMC8pUJFTysg53ROhe/RGTNmDAkJCQ4t8+GHHzJ16tQKqsj6HN7DsnLlSmJiYli8eDERERHMnTuXqKgodu3aRcOGDS9oX69ePZ599lnatm2Lu7s7n376KSNGjKBhw4ZERUXZ2vXr149ly5bZHnt4eJRxk0REpNppR/H3f6pCDMMgPz8fHx8ffHx8HFq2Xr16FVRV1eDwHpbZs2czcuRIRowYQfv27Vm8eDFeXl4sXbq0yPZ9+vRh0KBBtGvXjhYtWvD444/TuXNn1q9fb9fOw8ODwMBA21S3bt2ybZGIiEglys3N5bHHHqNhw4Z4enrSs2dPtm7dCsC6detwcXHh888/JywsDA8PD9avX8/kyZMJDQ219XH27Fkee+wx6tSpQ/369Rk/fjzR0dEMHDjQ1qZPnz488cQTtschISG89NJL/OMf/6B27do0adKEf/7zn3a1jR8/ntatW+Pl5UXz5s2ZOHEiZ86cqcgfR4VxKLDk5eWRlJREZGTkXx24uhIZGUliYuJFlzcMg4SEBHbt2sU111xj99y6deto2LAhbdq0YdSoURw7dqzYfnJzc8nKyrKbREREnGHcuHH8+9//Zvny5SQnJ9OyZUuioqI4fvy4rc3TTz/NtGnT2LlzJ507d76gj+nTp/PWW2+xbNkyNmzYQFZWFqtWrbroul9++WXCw8P5/vvvGT16NKNGjWLXrl2252vXrs3rr7/Ozz//zCuvvMKSJUuYM2dOuWx3ZXMosGRkZJCfn09AQIDd/ICAANLS0opdLjMzEx8fH9zd3RkwYADz58/n+uuvtz3fr18/3njjDRISEpg+fTpff/01/fv3Jz8/v8j+4uLi8PPzs03BwcGObIaIiEi5yM7OZtGiRcycOZP+/fvTvn17lixZQq1atfjXv/5la/f8889z/fXX06JFiyIP7cyfP58JEyYwaNAg2rZty4IFC6hTp85F13/DDTcwevRoWrZsyfjx4/H39+err76yPf/cc89x9dVXExISwk033cSYMWN47733ymXbK1ulnCVUu3Zttm3bxqlTp0hISCAmJobmzZvTp08fAIYOHWpr26lTJzp37kyLFi1Yt24d11133QX9TZgwgZiYGNvjrKwshRYREal0e/fu5cyZM/To0cM2r2bNmnTr1o2dO3dy1VVXARAeHl5sH5mZmaSnp9OtWzfbPDc3N8LCwigoKChx/efurXFxcSEwMJAjR47Y5q1cuZJ58+axd+9eTp06xdmzZ/H19XV4O63AoT0s/v7+uLm5kZ6ebjc/PT2dwMDA4lfi6krLli0JDQ3lqaee4vbbbycuLq7Y9s2bN8ff3589e/YU+byHhwe+vr52k4iIiFV5e3tXSL81a9a0e+zi4mILOYmJidx9993ccMMNfPrpp3z//fc8++yz5OXlVUgtFc2hwOLu7k5YWJjdqVgFBQUkJCTQvXv3UvdTUFBAbm5usc8fOHCAY8eO0ahRI0fKExERqVQtWrTA3d2dDRs22OadOXOGrVu30r59+1L14efnR0BAgG2gLkB+fj7JycmXVNvGjRtp2rQpzz77LOHh4bRq1Yrffvvtkvp0JocPCcXExBAdHU14eDjdunVj7ty5ZGdnM2LECACGDRtG48aNbXtQ4uLiCA8Pp0WLFuTm5rJ69WrefPNNFi1aBMCpU6eYMmUKt912G4GBgezdu5dx48bZBi2JiIiw05rr8fb2ZtSoUYwdO5Z69erRpEkTZsyYwenTp7nvvvvYvn17qfp59NFHiYuLo2XLlrRt25b58+fz+++/4+LiUoaNMLVq1YrU1FTeffddrrrqKj777DP+85//lLk/Z3M4sAwZMoSjR48yadIk0tLSCA0NJT4+3jYQNzU1FVfXv3bcZGdnM3r0aA4cOECtWrVo27YtK1asYMiQIYB5nG7Hjh0sX76cEydOEBQURN++fZk6daquxSIicpnz9/fH08uTnHsq90q3/v7+pW4/bdo0CgoKuPfeezl58iTh4eF88cUXDl2eY/z48aSlpTFs2DDc3Nx44IEHiIqKws3NrSybAMDNN9/Mk08+ySOPPEJubi4DBgxg4sSJTJ48ucx9OpOLYRiGs4u4VFlZWfj5+ZGZmanxLCJSrOTkZMLCwswrmhZ3EbJkIAySkpLo2rUaXKmsisjJySElJYVmzZrh6elp99zleC+hgoIC2rVrxx133FEtrm5b3OvryOe37iUkIiKW1qRJE6cHiIr222+/8eWXX9K7d29yc3NZsGABKSkp3HXXXc4uzTLKdC8hERERKT+urq68/vrrXHXVVfTo0YMffviBtWvX0q5dO2eXZhnawyIiIuJkwcHBdmcayYW0h0VEREQsT4FFREQsoxqcByJFKI/XVYFFREScrvCKradPn3ZyJVIRCl/X86/M6wiNYREREadzc3OjTp06tvvgeHl5XdJF08QaDMPg9OnTHDlyhDp16lzSdWUUWERExBIK70l37s37pHqoU6dOifccLA0FFhERsQQXFxcaNWpEw4YNOXPmjLPLkXJSs2bNS9qzUkiBRURELMXNza1cPuCketGgWxEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxvDIFloULFxISEoKnpycRERFs2bKl2LYffvgh4eHh1KlTB29vb0JDQ3nzzTft2hiGwaRJk2jUqBG1atUiMjKS3bt3l6U0ERERqYYcDiwrV64kJiaG2NhYkpOT6dKlC1FRURw5cqTI9vXq1ePZZ58lMTGRHTt2MGLECEaMGMEXX3xhazNjxgzmzZvH4sWL2bx5M97e3kRFRZGTk1P2LRMREZFqw+HAMnv2bEaOHMmIESNo3749ixcvxsvLi6VLlxbZvk+fPgwaNIh27drRokULHn/8cTp37sz69esBc+/K3Llzee6557jlllvo3Lkzb7zxBocOHWLVqlWXtHEiIiJSPTgUWPLy8khKSiIyMvKvDlxdiYyMJDEx8aLLG4ZBQkICu3bt4pprrgEgJSWFtLQ0uz79/PyIiIgots/c3FyysrLsJhEREam+HAosGRkZ5OfnExAQYDc/ICCAtLS0YpfLzMzEx8cHd3d3BgwYwPz587n++usBbMs50mdcXBx+fn62KTg42JHNEBERkSqmUs4Sql27Ntu2bWPr1q28+OKLxMTEsG7dujL3N2HCBDIzM23T/v37y69YERERsZwajjT29/fHzc2N9PR0u/np6ekEBgYWu5yrqystW7YEIDQ0lJ07dxIXF0efPn1sy6Wnp9OoUSO7PkNDQ4vsz8PDAw8PD0dKFxERkSrMoT0s7u7uhIWFkZCQYJtXUFBAQkIC3bt3L3U/BQUF5ObmAtCsWTMCAwPt+szKymLz5s0O9SkiIiLVl0N7WABiYmKIjo4mPDycbt26MXfuXLKzsxkxYgQAw4YNo3HjxsTFxQHmeJPw8HBatGhBbm4uq1ev5s0332TRokUAuLi48MQTT/DCCy/QqlUrmjVrxsSJEwkKCmLgwIHlt6UiIiJSZTkcWIYMGcLRo0eZNGkSaWlphIaGEh8fbxs0m5qaiqvrXztusrOzGT16NAcOHKBWrVq0bduWFStWMGTIEFubcePGkZ2dzQMPPMCJEyfo2bMn8fHxeHp6lsMmioiISFXnYhiG4ewiLlVWVhZ+fn5kZmbi6+vr7HJExKKSk5MJCwuDJKBrcY2AMEhKSqJr1+IaiUh5cOTzW/cSEhEREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREctTYBERERHLU2ARERERy1NgEREREcsrU2BZuHAhISEheHp6EhERwZYtW4ptu2TJEnr16kXdunWpW7cukZGRF7QfPnw4Li4udlO/fv3KUpqIiIhUQw4HlpUrVxITE0NsbCzJycl06dKFqKgojhw5UmT7devWceedd/LVV1+RmJhIcHAwffv25eDBg3bt+vXrx+HDh23TO++8U7YtEhERkWrH4cAye/ZsRo4cyYgRI2jfvj2LFy/Gy8uLpUuXFtn+rbfeYvTo0YSGhtK2bVtee+01CgoKSEhIsGvn4eFBYGCgbapbt26xNeTm5pKVlWU3iYiISPXlUGDJy8sjKSmJyMjIvzpwdSUyMpLExMRS9XH69GnOnDlDvXr17OavW7eOhg0b0qZNG0aNGsWxY8eK7SMuLg4/Pz/bFBwc7MhmiIiISBXjUGDJyMggPz+fgIAAu/kBAQGkpaWVqo/x48cTFBRkF3r69evHG2+8QUJCAtOnT+frr7+mf//+5OfnF9nHhAkTyMzMtE379+93ZDNERESkiqlRmSubNm0a7777LuvWrcPT09M2f+jQobbvO3XqROfOnWnRogXr1q3juuuuu6AfDw8PPDw8KqVmERERcT6H9rD4+/vj5uZGenq63fz09HQCAwNLXHbWrFlMmzaNL7/8ks6dO5fYtnnz5vj7+7Nnzx5HyhMREZFqyqHA4u7uTlhYmN2A2cIBtN27dy92uRkzZjB16lTi4+MJDw+/6HoOHDjAsWPHaNSokSPliYiISDXl8FlCMTExLFmyhOXLl7Nz505GjRpFdnY2I0aMAGDYsGFMmDDB1n769OlMnDiRpUuXEhISQlpaGmlpaZw6dQqAU6dOMXbsWDZt2sS+fftISEjglltuoWXLlkRFRZXTZoqIiEhV5vAYliFDhnD06FEmTZpEWloaoaGhxMfH2wbipqam4ur6Vw5atGgReXl53H777Xb9xMbGMnnyZNzc3NixYwfLly/nxIkTBAUF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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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ncUxKGERERERh6dOtyIiIuLwikUflrS0NI4dO0bZsmXV21pERKSIMAyDc+fOUa1aNZyds29DKRYJy7Fjx/J17RQREREpPEeOHKFGjRrZlikWCUvZsmUB84Tzew0VERERKRhnz56lZs2alr/j2SkWCUv6ZSBvb28lLCIiIkVMbrpzqNOtiIiIODwlLCIiIuLwlLCIiIiIwysWfVhERKR4MAyDK1eukJqaau9QJJ+4uLhQqlSpG552RAmLiIg4hJSUFI4fP87FixftHYrkMy8vL6pWrYqbm1ue61DCIiIidpeWlsahQ4dwcXGhWrVquLm5aSLQYsAwDFJSUjhx4gSHDh2iQYMGOU4QlxUlLCIiYncpKSmkpaVRs2ZNvLy87B2O5CNPT09cXV05fPgwKSkpeHh45KkedboVERGHkdf/fYtjy4/3VZ8MERERcXhKWERERMThKWEREREpAR544AFCQ0Pzvd5ly5ZRrly5fK/3ekpYREREipG///4bJycndu/ebe9Q8pUSFhEREXF4SlhEpESJjY0lOjo621tsbKy9wxQAw4ALF+xzM4xch7l69WqaNWuGp6cnFStWJDg4mAsXLlguwbzyyitUqVKFcuXK8dJLL3HlyhXGjRtHhQoVqFGjBkuXLrWq77fffuP222+31PfII49w/vx5y/NpaWm89NJL1KhRA3d3d1q0aMH69estz9epUweAli1b4uTkRJcuXazqnzVrFlWrVqVixYqMGDGCy5cvW55LTk7mmWeeoXr16pQuXZqgoCA2btxotf+yZcuoVasWXl5e9OnTh5MnT+b6tbohRjFw5swZAzDOnDlj71BExIEdPnzY8PDyMIBsbx5eHsbhw4ftHW6JcunSJePPP/80Ll269N/G8+cNw0wdCv92/nyu4j527JhRqlQpY86cOcahQ4eMX3/91Vi4cKFx7tw5IywszChbtqwxYsQIY8+ePca7775rAEZISIgxbdo0Y9++fcbUqVMNV1dX48iRI1dP+bxRtWpV45577jF+++03IyIiwqhTp44RFhZmOeacOXMMb29v4+OPPzb27NljPPvss4arq6uxb98+wzAMY8eOHQZgfPfdd8bx48eNkydPGoZhGGFhYYa3t7fx2GOPGTExMcYXX3xheHl5GW+99Zal7ocfftho37698dNPPxkHDhwwZs6cabi7u1vq3rZtm+Hs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RKRkczIMw7B3EDfq7Nmz+Pj4cObMGby9ve0djog4qOjoaAIDAyEKaJVVISAQoqKiaNUqq0Iikh9s+ftdJEcJiYiISMmihEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcXp4SloULF+Lv74+HhwdBQUHs2LEj2/KrVq2icePGeHh40KxZM9atW2f1/Pnz5xk5ciQ1atTA09OTJk2asGjRoryEJiIiIsWQzQnLypUrGTt2LOHh4URHR9O8eXNCQkJISEjItPzWrVsZOHAgDz30ELt27SI0NJTQ0FB+//13S5mxY8eyfv16PvzwQ2JiYhgzZgwjR45k7dq1eT8zERERKTZsTljmzJnD8OHDGTZsmKUlxMvLiyVLlmRaft68eXTv3p1x48YREBDA1KlTadWqFQsWLLCU2bp1K2FhYXTp0gV/f38eeeQRmjdvnmPLjYiIiJQMNiUsKSkpREVFERwc/F8Fzs4EBwcTGRmZ6T6RkZFW5QFCQkKsyrdv3561a9dy9OhRDMPghx9+YN++fXTr1i3TOpOTkzl79qzVTURERIovmxKWxMREUlNTqVKlitX2KlWqEBcXl+k+cXFxOZafP38+TZo0oUaNGri5udG9e3cWLlzIrbfemmmd06dPx8fHx3KrWbOmLachIiIiRYxDjBKaP38+27ZtY+3atURFRTF79mxGjBjBd999l2n58ePHc+bMGcvtyJEjhRyxiIiIFKZSthT29fXFxcWF+Ph4q+3x8fH4+flluo+fn1+25S9dusSECRP47LPP6NmzJwA333wzu3fvZtasWRkuJwG4u7vj7u5uS+giIiJShNnUwuLm5kZgYCARERGWbWlpaURERNCuXbtM92nXrp1VeYANGzZYyl++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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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sMBy2zAMFixYQMmSJenYsSNgDjrn4uJyQ7uDN95444a6chqbi4sLnTp14osvvrC6JBMXF8fKlStp27at5dR0XsnuODP069ePvXv3MmbMGFxcXG7oEXEzkZGRVm2pjh8/zhdffEGnTp3ybQyckiVL0rx5c5tGiH700Uc5ceJEpoMWXr58mYsXL1ruBwUFUbJkSWbMmEH58uUtl+natWvH1q1b+emnn6zOrmTUHxkZmel7/vz586SmpmYal4uLC8HBwaxZs4aTJ09a1h86dMiqy7Stbva+zE0blus/p87OzpbLthmf1fvvv5+tW7eyfft2S7kzZ85YtZHKaez2GvCuV69ebN26laVLlxIfH5/p5SCAqKgovL29b9qbTUw6w1LELF261GochQwjRozggQce4LPPPqNHjx507dqVI0eOsGjRIho0aMCFCxdu2KZOnTq0bduWp59+muTkZObOnUuFChWsvnwWLlxI27ZtadSoEYMGDaJWrVrExcURGRnJ//73P3777Teb4p88eTLr1q2jXbt2DBkyhNTUVObPn88dd9zB77//ftNtGzRoQIcOHQgMDKR8+fLs2LGDTz75xKrBaMY19+HDhxMSEmLzj+q13N3dWbduHWFhYQQFBfHtt9/yzTffMH78eMsZAW9vb3r27Mn8+fNxcnKidu3afP3115m2Q7Altpdffpn169fTtm1bhgwZQokSJVi8eDHJycm8+uqruTqeWznODF27dqVChQp8/PHHdOnShcqVK+d4Pw0bNiQkJMSqWzNg88jEtnrwwQd58cUXLd2Ps9OvXz8++ugjnnrqKX788UfatGlDWloaf/75Jx999JFlPBAAT09PAgMD2bp1q2UMFjDPsFy8eJGLFy/ekLCMGTOGL7/8kgceeMDSNfvixYv88ccffPLJJxw9ejTLyweTJk3i+++/p02bNjz99NOkpaWxYMECGjZsyK5du3L1/GS8L1988UUee+wxSpYsSbdu3ShVqlSu2rA88cQTnDt3jnvvvZfbbruNY8eOMX/+fJo0aWI5yzB27Fjef/99OnfuzIgRIyzdmv38/LL9Hrg+9h9++IE5c+ZQtWpVatasmWnbmPzw6KOPMnr0aEaPHk358uWzPGO2fv16q/eG3ISdeidJHsvo7pnVcvz4cSM9Pd2YNm2a4efnZ7i5uRlNmzY1vv76ayMsLMzw8/Oz1JXR5XbmzJnG7NmzjerVqxtubm5Gu3btjN9+++2GfR8+fNjo37+/4evra5QsWdKoVq2a8cADDxiffPKJpUxOuzUbhmH89NNPRmBgoOHq6mrUqlXLWLRokaVL4bWu79b88ssvGy1btjTKli1reHh4GLfffrvxyiuvGCkpKZYyqampxjPPPGNUqlTJcHJystR57TFfL6tuzaVKlTIOHz5sdOrUyfD09DR8fHyM8PBwIy0tzWr7M2fOGA8//LDh6elplCtXznjyySeN3bt331BnVrEZxo1dLA3DMKKjo42QkBCjdOnShqenp3HPPfcYW7ZssSqTVXf3nL4ethxnhiFDhhiAsXLlypvWfS3AGDp0qLFixQqjbt26lvfn9fFl1a05s+7s7du3N9q3b5/tvuPi4owSJUoY77///g3b33HHHZluk5KSYsyYMcO44447DDc3N6NcuXJGYGCgMXnyZCMhIcGq7JgxYwzAmDFjhtX6OnXqGIBV1/QM//zzjzFu3DijTp06hqurq1GxYkWjdevWxqxZs6zez5m9LzZs2GA0bdrUcHV1NWrXrm28/fbbxnPPPWe4u7tblct4zq93/efKMMyu1tWqVTOcnZ2z7OKcU5988onRqVMno3Llyoarq6tRo0YN48knnzROnTplVe7333832rdvb7i7uxvVqlUzpk6darzzzjs5fv0NwzD+/PNP4+677zY8PDxu6F6dneuf24zvoIyu/Bkye09maNOmjQEYTzzxRKb72LdvnwEYP/zwQ47jKs6cDEPD64lI3nn22Wd55513iI2NxdPT097h5MjAgQM5cOCApUdPURMaGnrLXf4dwfLlyxkwYABHjhyxaj9VWI0cOZJNmzYRFRWlMyw5oDYsIpJnkpKSWLFiBQ8//HChSVbAbHj+66+/snnzZnuHcsuun0fn4MGDrF27lg4dOtgnIMnU2bNnefvtt3n55ZeVrOSQ2rCIyC07ffo0P/zwA5988glnz561DLFeWNSoUYOkpCR7h5EnatWqxeOPP06tWrU4duwYb775Jq6urll2ky5O0tLSsu0MULp06RvmlcoPFSpUyLTtoGRNCYuI3LK9e/fSp08fKleuzOuvv37DvFRScDp37syHH35IbGwsbm5utGrVimnTpmU6MF9xc/z48WwHmQsPD79hQklxDGrDIiIixUJSUhK//PLLTcvUqlXr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zDPP2LTNZ599RsmSJfMpIsemhEVERBxfADmb66kQMAyDtLQ0SpcuTenSpW3atnz58vkUleNziJFuRURECrPk5GSGDx9O5cqVcXd3p23btvz666+A2RnFycmJb7/9lsDAQNzc3Pjll1+YNGkSTZo0sdSRmprK8OHDKVu2LBUqVOD5558nLCyM0NBQS5kOHTpYTSDs7+/PtGnT+O9//0uZMmWoUaPGDUOCPP/889SrVw9PT09q1arFhAkTuHLlSn4+HflCCYuIiMgtGjt2LJ9++invvvsu0dHR1KlTh5CQEM6dO2cp88ILLzB9+nT27dvHnXfeeUMdM2bM4IMPPmDZsmVs3ryZxMRE1qxZk+2+Z8+eTfPmzdm5cydDhgzh6aefthqMtUyZMixfvpy9e/cyb9483nrrLV577bU8Oe6CpIRFRETkFly8eJE333yTmTNn0qVLFxo0aMBbb72Fh4cH77zzjqXclClTuO+++6hdu3aml3bmz5/PuHHj6NGjB7fffjsLFiygbNmy2e7//vvvZ8iQIdSpU4fnn3+eihUr8uOPP1oef+mll2jdujX+/v5069aN0aNH89FHH+XJsRcktWERERG5BYcPH+bKlSu0adPGsq5kyZK0bNmSffv20aJFCwCaN2+eZR0JCQnExcXRsmVLyzoXFxcCAwNJT0+/6f6vPVvj5OSEr68vp0+ftqxbvXo1r7/+OocPH+bChQukpqYWyvn3dIZFRESkAJQqVSpf6r2+15CTk5MlyYmMjKRPnz7cf//9fP311+zcuZMXX3yRlJSUfIklPylhERERuQW1a9fG1dWVzZs3W9ZduXKFX3/9lQYNGuSoDm9vb3x8fCwNdQHS0tKIjo6+pdi2bNmCn58fL774Is2bN6du3bocO3bsluq0F10SEhERx7fPcfdTqlQpnn76acaMGUP58uWpUaMGr776KpcuXWLgwIH89ttvOarnmWeeISIigjp16nD77bczf/58/v77b5ycnGwP6l9169YlJiaGVatW0aJFC7755hs+//zzXNdnT0pYRETEYVWsWBF3T3eS+hbsSLcVK1a0aZvp06eTnp5Ov379+Oeff2jevDnfffcd5cqVy3Edzz//PLGxsfTv3x8XFxcGDx5MSEgILi4uth6CRffu3Xn22WcZNmwYycnJdO3alQkTJjBp0qRc12kvTkZOZiYsBBIT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iIgAzIa6e/futdw+ceIEu3btonTp0tSpUwcwLwOtXLmSL774gjJlyljaw3h7e+Ph4ZEnByoiIiKFl80JS69evThz5gwTJ04kNjaWJk2asG7dOktD3JiYGJydr564OXnyJE2bNrXcnzVrFrNmzaJ9+/Zs3LgRgDfffBOADh06WO1r2bJlPP7447aGKCIiIkWMzQkLmG1Nhg0bluljGUlIBn9/fwzDuGl92T0uIiIixZvD9RISERERuZ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4SlhERETE4SlhEREREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh5erhGXhwoX4+/vj7u5OUFAQ27dvz7Lsnj17ePjhh/H398fJyYm5c+fecp0iIiJSvNicsKxevZpRo0YRHh5OdHQ0jRs3JiQkhNOnT2da/tKlS9SqVYvp06fj6+ubJ3WKiIhI8WJzwjJnzhwGDRrEgAEDaNCgAYsWLcLT05OlS5dmWr5FixbMnDmTxx57DDc3tzypU0RERIoXmxKWlJQUoqKiCA4OvlqBszPBwcFERkbmKoDc1pmcnExiYqLVIiIiIkWTTQlLfHw8aWlp+Pj4WK338fEhNjY2VwHkts6IiAi8vb0tS/Xq1XO1fxEREXF8hbaX0Lhx40hISLAsx48ft3dIIiIikk9K2FK4YsWKuLi4EBcXZ7U+Li4uywa1+VWnm5tblm1iREREpGix6QyLq6srgYGBbNiwwbIuPT2dDRs20KpVq1wFkB91ioiISNFi0xkWgFGjRhEWFkbz5s1p2bIlc+fO5eLFiwwYMACA/v37U61aNSIiIgCzUe3evXstt0+cOMGuXbsoXbo0derUyVGdIiIiUrzZnLD06tWLM2fOMHHiRGJjY2nSpAnr1q2zNJqNiYnB2fnqiZuTJ0/StGlTy/1Zs2Yxa9Ys2rdvz8aNG3NUp4iIiBRvToZhGPYOIi8kJibi7e1NQkIC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v75DXA6y5VhzY9euXZQrV87uyQrk7bG2atWKV155hdOnT1O5cmXAfF29vLxo0KBBnuwjr93K8e/atQtnZ2fLsRZWrq6uBAYGsmHDBkvvtfT0dDZs2MCwYcPsG1w+u3DhAocPH6Zfv372DiXf1axZE19fXzZs2GBJUBITE9m2bVu2vRyLgv/973+cPXvWKllzdEpY8tmJEyfo0KEDfn5+zJo1izNnzlgey8jw//Of/zB58mQGDhzI888/z+7du5k3bx6vvfaavcLOtZiYGM6dO0dMTAxpaWns2rULgDp16lC6dGm++uor4uLiuOuuu3B3d2f9+vVMmzaN0aNH2zfwXMjuWDt16kSDBg3o168fr776KrGxsbz00ksMHTrUIZKzWxEZGcm2bdu45557KFOmDJGRkTz77LP07dvXIZLsWzVq1CjCwsJo3rw5LVu2ZO7cuVy8eJEBAwbYO7Q8NXr0aLp164afnx8nT54kPDwcFxcXevfube/Q8sSFCxeszhYdOXKEXbt2Ub58eWrUqMHIkSN5+eWXqVu3LjVr1mTChAlUrVq1UA6zcLNjLV++PJMnT+bhhx/G19eXw4cPM3bsWOrUqUNISIgdo7aRvbspFXXLli0zgEyXa/32229G27ZtDTc3N6NatWrG9OnT7RTxrQkLC8v0WH/88UfDMAzj22+/NZo0aWKULl3aKFWqlNG4cWNj0aJFRlpamn0Dz4XsjtUwDOPo0aNGly5dDA8PD6NixYrGc889Z1y5csV+QeeRqKgoIygoyPD29jbc3d2NgIAAY9q0aUZSUpK9Q8sz8+fPN2rUqGG4uroaLVu2NLZu3WrvkPJcr169jCpVqhiurq5GtWrVjF69ehmHDh2yd1h55scff8z0MxoWFmYYhtm1ecKECYaPj4/h5uZmdOzY0di/f799g86lmx3rpUuXjE6dOhmVKlUySpYsafj5+RmDBg2yGnKhMHAyjCLYn1RERESKFPUSEhEREYenhEVEREQcnhIWERERcXhKWERERMThKWERERERh6eERURERByeEhYRERFxeEpYRERExOEpYRERERGHp4RFREREHJ4SFhEREXF4/w+/F/8A5gWGLQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "labels = np.concatenate([np.random.normal(-20, 1, 10), np.random.normal(0, 2, 100), np.random.normal(12, 2, 300)], -1)\n",
    "labels[(-1<labels) & (labels<1)] = 0   # This is done to create some 'gaps' for demo purposes\n",
    "labels[(10<labels) & (labels<12)] = 0  # This is done to create some 'gaps' for demo purposes\n",
    "\n",
    "n_bins = 50\n",
    "label_range=None\n",
    "reweight = 'inv'\n",
    "lds_kernel='gaussian'\n",
    "lds_ks=5\n",
    "lds_sigma=2\n",
    "\n",
    "weights_per_sample = prepare_LDS_weights(labels, n_bins, label_range=label_range, reweight=reweight, \n",
    "                                         lds_kernel=lds_kernel, lds_ks=lds_ks, lds_sigma=lds_sigma, show_plot=True)\n",
    "\n",
    "n_bins = 50\n",
    "label_range=None\n",
    "reweight = 'sqrt_inv'\n",
    "lds_kernel='gaussian'\n",
    "lds_ks=5\n",
    "lds_sigma=2\n",
    "\n",
    "weights_per_sample = prepare_LDS_weights(labels, n_bins, label_range=label_range, reweight=reweight, \n",
    "                                         lds_kernel=lds_kernel, lds_ks=lds_ks, lds_sigma=lds_sigma, show_plot=True)\n",
    "\n",
    "n_bins = None\n",
    "label_range=None\n",
    "reweight = 'sqrt_inv'\n",
    "lds_kernel='triang'\n",
    "lds_ks=9\n",
    "lds_sigma=1\n",
    "\n",
    "weights_per_sample = prepare_LDS_weights(labels, n_bins, label_range=label_range, reweight=reweight, \n",
    "                                         lds_kernel=lds_kernel, lds_ks=lds_ks, lds_sigma=lds_sigma, show_plot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "class WeightedPerSampleLoss(Callback):\n",
    "    order = 65\n",
    "\n",
    "    r\"\"\"Loss wrapper than applies a weight per sample during training\n",
    "\n",
    "    Weights are not applied to the validation loss.\n",
    "\n",
    "    Args:\n",
    "        instance_weights:   weights that will be applied. Weights will be normalized to 1.\n",
    "                            You can pass weights for the entire dataset or just for the training set.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, instance_weights):\n",
    "        store_attr()\n",
    "\n",
    "    def before_fit(self):\n",
    "        self.old_loss = self.learn.loss_func\n",
    "        self.reduction = getattr(self.learn.loss_func, 'reduction', None)\n",
    "        self.learn.loss_func = _PerInstanceLoss(crit=self.learn.loss_func)\n",
    "        if len(self.instance_weights) == len(self.learn.dls.train.dataset):\n",
    "            self.instance_weights = torch.cat([self.instance_weights, torch.zeros(len(self.learn.dls.valid.dataset))])\n",
    "        assert len(self.instance_weights) == len(self.learn.dls.train.dataset) + len(self.learn.dls.valid.dataset)\n",
    "        self.instance_weights = self.instance_weights / torch.sum(self.instance_weights) * len(self.instance_weights)\n",
    "        self.instance_weights = torch.as_tensor(self.instance_weights, device=self.learn.dls.device)\n",
    "\n",
    "    def before_batch(self):\n",
    "        self.learn.loss_func.training = self.training\n",
    "        if self.training:\n",
    "            input_idxs = self.learn.dls.train.input_idxs\n",
    "            self.learn.loss_func.weights = self.instance_weights[input_idxs]\n",
    "\n",
    "    def after_fit(self):\n",
    "        self.learn.loss_func = self.old_loss\n",
    "        if self.reduction is not None: self.learn.loss_func.reduction = self.reduction\n",
    "            \n",
    "\n",
    "class _PerInstanceLoss(Module):\n",
    "    def __init__(self, crit):\n",
    "        self.crit = crit\n",
    "        self.crit.reduction = 'none'\n",
    "        self.weights = None\n",
    "        self.training = False\n",
    "\n",
    "    def forward(self, input, target):\n",
    "        if not self.training:\n",
    "            return self.crit(input, target).mean()\n",
    "        else:\n",
    "            return ((self.crit(input, target) * self.weights)).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# BatchSubsampler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "class BatchSubsampler(Callback):\n",
    "    \"\"\" Callback that selects a percentage of samples and/ or sequence steps with replacement from each training batch\n",
    "\n",
    "    Args:\n",
    "    ====\n",
    "\n",
    "    sample_pct:     percentage of random samples (or instances) that will be drawn. If 1. the output batch will contain the same number of samples\n",
    "                    as the input batch.\n",
    "    step_pct:       percentage of random sequence steps that will be drawn. If 1. the output batch will contain the same number of sequence steps\n",
    "                    as the input batch. If used with models that don't use a pooling layer, this must be set to 1 to keep the same dimensions.\n",
    "                    With CNNs, this value may be different.\n",
    "    same_seq_len:   If True, it ensures that the output has the same shape as the input, even if the step_pct chosen is < 1. Defaults to True.\n",
    "    update_y:       used with step_pct. If True, it applies the same random indices to y. It can only be used with sequential targets.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, sample_pct:Optional[float]=None, step_pct:Optional[float]=None, same_seq_len:bool=True, update_y:bool=False):\n",
    "        store_attr()\n",
    "\n",
    "    def before_fit(self):\n",
    "        self.run = not hasattr(self, \"gather_preds\")\n",
    "        if not(self.run): return\n",
    "\n",
    "    def before_batch(self):\n",
    "        if not self.training: return\n",
    "\n",
    "        if self.sample_pct is not None:\n",
    "            B = self.x.shape[0]\n",
    "            if isinstance(self.sample_pct, tuple):\n",
    "                sample_pct = np.random.rand() * (self.sample_pct[1] - self.sample_pct[0]) + self.sample_pct[0]\n",
    "            else:\n",
    "                sample_pct = self.sample_pct\n",
    "            idxs = random_choice(B, round(B * sample_pct), True)\n",
    "            self.learn.xb = tuple(xbi[idxs] for xbi in self.learn.xb)\n",
    "            self.learn.yb = tuple(ybi[idxs] for ybi in self.learn.yb)\n",
    "\n",
    "        if self.step_pct is not None:\n",
    "            S = self.x.shape[-1]\n",
    "            if isinstance(self.step_pct, tuple):\n",
    "                step_pct = np.random.rand() * (self.step_pct[1] - self.step_pct[0]) + self.step_pct[0]\n",
    "            else:\n",
    "                step_pct = self.step_pct\n",
    "            if self.step_pct != 1 and self.same_seq_len:\n",
    "                idxs = np.sort(np.tile(random_choice(S, round(S * step_pct), True), math.ceil(1 / step_pct))[:S])\n",
    "            else:\n",
    "                idxs = np.sort(random_choice(S, round(S * step_pct), True))\n",
    "            self.learn.xb = tuple(xbi[...,idxs] for xbi in self.learn.xb)\n",
    "            if self.update_y:\n",
    "                self.learn.yb = tuple(ybi[...,idxs] for ybi in self.learn.yb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": "IPython.notebook.save_checkpoint();",
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/nacho/notebooks/tsai/nbs/024_callback.core.ipynb saved at 2023-02-21 13:46:35\n",
      "Correct notebook to script conversion! 😃\n",
      "Tuesday 21/02/23 13:46:38 CET\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" autoplay=\"autoplay\">\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#|eval: false\n",
    "#|hide\n",
    "from tsai.export import get_nb_name; nb_name = get_nb_name(locals())\n",
    "from tsai.imports import create_scripts; create_scripts(nb_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
